package cl.uchile.in77j;


// Clase que tendra la lógica para visualizar las acciones
// ingresadas por el cliente y además los mensajes, estados
// y solicitudes al cliente proveniente de otras clases.
/**
 * Trabajo realizado por el grupo con formado por
 * Gonzalo Castillo
 * Hernán Bolaños
 * Juan Carlos Villanueva
 */
public class Display {
    //Object Conexion para el registro por evento y método en tabla log;
    Conexion cxn = new Conexion();
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.F8547FAB-2DC9-217D-9A71-DF9F051F2670]
    // </editor-fold>
    /**
     *
     */
    public void visualizar(String mensaje) {
         cxn.log("visualizar");
        // Despliega mensaje enviado por objeto en visor
        System.out.println(mensaje);

    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.7589E08C-BB2F-5AAF-C6A7-872A6A6A8D60]
    // </editor-fold> 
    /**
     * Modalidad de compra con billete o moneda
     * Envía monto a Display para su descpliegue
     * También almacena para posterior solicitud de clase Despachador.
     */
    public void recibeMonto(int monto) {
        String sql="INSERT INTO display (id, monto) VALUES ('',monto";
        String cmonto =integer.toString(monto);
        
        // registro en log de evento
        cxn.log("recibeMonto");

        // Despliega monto clase lectorbilleto o bien monedero
        visualizar(cmonto);

        // Almacenar monto en BD reutilizando conexión clase Conexion
        cxn.ejecutar(sql);
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.FF3BF76D-F70E-EE73-1B64-241382381831]
    // </editor-fold> 
    /**
     *
     * @param codigo
     */
    public void presentarCodigo(String codigo) {
         cxn.log("presentarCodigo");

        // Despliega codigo de producto ingresado por teclado.
         visualizar(codigo);

    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.06A50021-1B61-857E-9899-82D169840101]
    // </editor-fold> 
    /**
     *
     */
    public void displayProductoDespachado(String producto) {
        cxn.log("displayProductoDespachado");
        // Despliega codigo de producto ingresado por teclado.
        visualizar(producto);
 
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.8A5F9A73-71A6-82EA-2831-B6FC11E49EAA]
    // </editor-fold> 
    /**
     *
     * @param vuelto_entregado
     */
    public void desplegarVueltoEntregado(int vuelto_entregado) {
        cxn.log("desplegarVueltoEntregado");
        //OJO: aparece como una clase no pública.
        Monedero mon = new Monedero();

        String cvuelto =integer.toString(vuelto_entregado);

        // Despliega vuelto entregado por monedero.
         visualizar(cvuelto);
         mon.entregarVuelto(vuelto_entregado);


    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.8D287366-6C7A-27FF-4228-A74BC2D27FC8]
    // </editor-fold> 
    /**
     * Método que limpia el display de la pantalla.
     */
    public void limpiarSeleccion() {
        cxn.log("limpiarSeleccion");
        // Limpia display
         visualizar("");

    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.B03A6D49-E09E-95D0-CAF7-6DBDCFDAE34A]
    // </editor-fold> 
    /**
     * Despliegue de clave
     * @param clave
     */
    public void displayClave(int clave) {
        cxn.log("displayClave");
        String cclave =integer.toString(clave);


        // Despliega clave ingresada
        visualizar(cclave);



    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.45F78F26-5EA4-97B5-94C5-65D2821D0125]
    // </editor-fold> 
    /**
     * Recibe monto disponible y lo despliega en el visor sin almacenar.
     * @param monto
     */
    public void recibeMontoDisponible(int monto) {
        cxn.log("recibeMontoDisponible");
        String cmonto =integer.toString(monto);

        // Despliega monto disponible según modalidad de prepago.
        visualizar(cmonto);

    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.15A18C1F-092B-7F05-6FE1-F2B51898FA0F]
    // </editor-fold> 
    /**
     * Entrega monto disponible a clase Desapachador para validación y entrega
     * @return
     */
    public int montoDisponible() {

        //OJO: en este método tengo incompatibilidad en tipo de dato
        int valor;
        String sql = "";
        cxn.log("montoDisponible");
        sql="SELECT MAX(id) as ult_reg from display";
        valor=cxn.ejecutar(sql);
        sql="SELECT monto from display where id='valor'";
        valor=cxn.ejecutar(sql);
        return (valor);
       }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.42EC6CFB-A84E-FEBD-C4AA-03D5ADE2D77C]
    // </editor-fold> 
    public void desplegarDescuento ( int descuento) {
        cxn.log("desplegarDescuento");
        String cdescuento =integer.toString(descuento);

        // Despliega descuento efectuado
        visualizar(cdescuento);
 }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.FFB90FD6-8CA6-EA02-D4F5-54FF18208B5B]
    // </editor-fold> 
    /**
     *
     */
    public void consultarStock() {
        cxn.log("consultarStock");
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.BDC960CA-8AE6-2C5B-741A-CB6C470679E1]
    // </editor-fold> 
    /**
     * Visualiza en visor clave
     * @param clave
     */
    public void desplegarClave(String clave) {
        cxn.log("desplegarClave");

        // OJO: este método está más arriba -> validar si se justifica o no
        // Además debería estar enmascarado.
        visualizar(clave);

    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.678A19C7-AE79-E0EB-EF01-8C7CD05DCC94]
    // </editor-fold> 
    /**
     * Visualiza mensaje con el resultado de la validación.
     * @param mensaje
     */
    public void desplegarValidacion(String mensaje) {
        cxn.log("desplegarValidacion");

        // OJO: validar si aplica o no este método.
       visualizar(mensaje);


    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.2E46924E-5EAB-CD82-6419-2E5E6B7CAF2D]
    // </editor-fold> 
    /**
     *
     * @param numeroTarjeta
     */
    public void presentarTarjeta(String numeroTarjeta) {
        cxn.log("presentarTarjeta");

        // Despliega núemro de tarjeta.
        visualizar(numeroTarjeta);

    }

}

